﻿var K_Operacion = { Insertar: 1, Editar: 2, Ver: 3 };
var K_ResultadoAjax = { Exito: 1, Error: 0 };

$(function () {
    
    
    $('#txtValNum').on("keypress", function (e) { return solonumeros(e); });

    $("#ddlTabla").change(function () {
        var idTabla = $("#ddlTabla").val();
        $("#txtCodigo").val(idTabla);
    });

    $("#btnAlerta").on("click", function () {
        alertify.confirm("This is a confirm dialog", function (e) {
            if (e) {
                alertify.success("You've clicked OK");
            } else {
                alertify.error("You've clicked Cancel");
            }
        });
        return false;
    });

    $("#mvNuevo").dialog({
        modal: true,
        autoOpen: false,
        width: 400,
        height: 270,
        title: "Nuevo Registro Parametro",
        buttons: {
            "Grabar": insertar,
            "Cerrar": closePopup
        }
    });


    $("#btnBuscar").on("click", function () {
        buscarJqGrid();
    }).button();

     $("#btnNuevo").on("click", function () {
        resetPopup();
        $("#hidOpcion").val(K_Operacion.Insertar);
        $("#mvNuevo").dialog('option', 'title', 'Registrar información del Parametro.');
        $("#mvNuevo").dialog("open");
        
        $('#mvNuevo').css('overflow', 'hidden');
        $("#txtCodigo").prop('disabled', true);
        loadTipoTabla('ddlTabla', 0);
    }).button();


    $("#btnEditar").on("click", function () {
        var filas = jQuery("#grid").jqGrid('getGridParam', 'selarrrow');
        if (filas != null) {
            if (filas.length > 0) {
                if (filas.length == 1) {
                    var codigoSel = jQuery("#grid").jqGrid('getRowData', filas[0]).para_icodigo_parametro;
                    edit(codigoSel);
                } else {
                    alertify.error("Para modificar seleccione sólo un elemento de la lista.");
                }
            } else {
                alertify.error("Seleccione un elemento para modificar.");
            }
        } else {
            alertify.error("Seleccione un elemento para modificar.");
        }
    }).button();

    $("#btnEliminar").on("click", function () {
        var item = new Array();

        var filas = jQuery("#grid").jqGrid('getGridParam', 'selarrrow');

        if (filas.length > 0) {
            alertify.confirm("Esta seguro de eliminar los registros seleccionados?", function (e) {
                if (e) {
                    for (var i = 0; i < filas.length; i++) {
                        var codigoSel = (jQuery("#grid").jqGrid('getRowData', filas[i]).para_icodigo_parametro);
                        item[i] = codigoSel;
                    }
                    eliminar(item);
                } else {
                    alertify.error("Operación eliminación cancelada.");
                }
            });

        } else {
            alertify.error("Seleccione un elemento para eliminar.");
        }
        return false;
    }).button();

    $("#ddlTablaFiltro").change(function () {
        buscarJqGrid();
    });

    $("#btnLimpiar").on("click", function () {
        $('#ddlTablaFiltro').val(0);
        buscarJqGrid();
    }).button();

    loadTipoTabla('ddlTablaFiltro', 0);
    buscarJqGrid();
});

var verDeta = function (param) {
    $("#txtCodigo").val(param);
    $("#mvNuevo").dialog("open");
    $("#mvNuevo").dialog('option', 'title', 'Ver información del Parametro.');
};

var buscarJqGrid = function () {

    var parametro = {
        idTabla: $("#ddlTablaFiltro").val()
    };

    $("#grid").jqGrid("clearGridData", true);
    $("#grid").jqGrid('setGridParam', { url: 'ListarParametroJQUERY', datatype: 'json', mtype: 'POST', postData: parametro }).trigger('reloadGrid');

    jQuery("#grid").jqGrid({
        url: 'ListarParametroJQUERY',
        datatype: 'json',
        postData: parametro,
        mtype: 'POST',
        colNames: ['ID Parametro', 'ID Tabla', 'ID Registro', 'Descripción', 'Valor Numerico', 'Valor Texto',
                    'Modificable', 'Eliminable'
                    , 'Accion'
        ],
        colModel: [
            { name: 'para_icodigo_parametro', index: 'para_icodigo_parametro', width: 90, align: 'left' },
            { name: 'para_icodigo_tabla', index: 'para_icodigo_tabla', width: 90, align: 'left' },
            { name: 'para_icodigo_registro', index: 'para_icodigo_registro', width: 90 , align: 'center' },
            { name: 'para_vnombre_parametro', index: "para_vnombre_parametro", width: 160, align: 'left' },
            { name: 'para_dvalor_numerico', index: "para_dvalor_numerico", width: 120, align: 'left' },
            { name: 'para_vvalor_texto', index: "para_vvalor_texto", width: 120, align: 'left' },
            { name: 'para_cflag_modificar', index: "para_cflag_modificar", width: 100, align: 'left' },
            { name: 'para_cflag_eliminar', index: "para_cflag_eliminar", width: 100, align: 'left' },
            { name: 'act', index: 'act', width: 75, sortable: false },
        ],
        rowNum: 20,
        pager: jQuery('#pager'),
        rowList: [20, 30, 50],
        sortname: 'ID Parametro',
        viewrecords: true,
        sortorder: 'asc',
        multiselect: true,
        multiSort: true,
        width: '990',
        height: '200',
        caption: 'Parametros Registrados',
        ondblClickRow: function (id) { verDeta(id); },
        gridComplete: function () {
            var ids = jQuery("#grid").jqGrid('getDataIDs');
            for (var i = 0; i < ids.length; i++) {
                var cl = ids[i];
                xview = "<img src='../Imagen/icono/search.png' onclick=\"ver('" + cl + "');\"  />&nbsp;&nbsp;";
                xedit = "<img src='../Imagen/icono/edit.png' onclick=\"edit('" + cl + "');\"  />&nbsp;&nbsp;";
                xdel = "<img src='../Imagen/icono/del.png' onclick=\"del('" + cl + "');\"  /> ";
                jQuery("#grid").jqGrid('setRowData', ids[i], { act: xview + xedit + xdel });
            }
        }

    });
}

var insertar = function () {
    if (ValidarRequeridos()) {
        var eliminable = '';
        var modificable = '';

        if ($("#chkMod").is(':checked')) {
            modificable = 'S';
        } else {
            modificable = 'N';
        }
        if ($("#chkEli").is(':checked')) {
            eliminable = 'S';
        } else {
            eliminable = 'N';
        }

        var parametro = {
            para_icodigo_tabla: $("#ddlTabla").val(),
            para_icodigo_registro: 0,
            para_vnombre_parametro: $("#txtNombre").val(),
            para_dvalor_numerico: $("#txtValNum").val(),
            para_vvalor_texto: $("#txtValTexto").val(),
            para_cflag_modificar: modificable,
            para_cflag_eliminar: eliminable
        };
        if ($("#hidOpcion").val() == K_Operacion.Insertar) {
            ///insertar
            $.ajax({
                url: 'Insertar',
                data: parametro,
                type: 'POST',
                beforeSend: function () { },
                success: function (response) {
                    var dato = response;
                    validarRedirect(dato);
                    if (dato.result == K_ResultadoAjax.Exito) {
                        //loadData();
                        alertify.success(dato.message);
                    } else {
                        alertify.error(dato.message);
                    }
                }
            });
        } else if ($("#hidOpcion").val() == K_Operacion.Editar) {
            ///actualizacion
            $.ajax({
                url: 'Actualizar',
                data: parametro,
                type: 'POST',
                success: function (response) {
                    var dato = response;
                    validarRedirect(dato);
                    if (dato.result == K_ResultadoAjax.Exito) {
                        alertify.success(dato.message);
                    } else {
                        alertify.success(dato.message);
                    }
                }
            });
        }
        $("#mvNuevo").dialog("close");
        buscarJqGrid();
    }
};

var eliminar = function (item) {
    $.each(item, function (index, i) {
        $.ajax({
            data: { para_icodigo_parametro: i },
            url: 'Eliminar',
            type: 'POST',
            success: function (response) {
                var dato = response;
                validarRedirect(dato);
                if (dato.result == K_ResultadoAjax.Exito) {
                    alertify.success(dato.message);
                } else {
                    alertify.success(dato.message);
                }
            }
        });
    });
    buscarJqGrid();
    return false;
}

function resetPopup() {
    msgOkB("aviso", "");
    limpiarRequerido();
    $("#ddlTabla").val("");
    $("#txtCodigo").val("");
    $("#txtNombre").val("");
    $("#txtValNum").val("");
    $("#txtValTexto").val("");

    $("#ddlTabla").removeAttr('disabled');
    $("#txtCodigo").removeAttr('disabled');
    $("#txtNombre").removeAttr('disabled');
    $("#txtValNum").removeAttr('disabled');
    $("#txtValTexto").removeAttr('disabled');
    $("#chkMod").removeAttr('disabled');
    $("#chkEli").removeAttr('disabled');
}
var closePopup = function () {
    $("#mvNuevo").dialog("close");
};


function edit(id) {
    $("#hidOpcion").val(K_Operacion.Editar);
    $("#mvNuevo").dialog("open");
    $("#mvNuevo").dialog('option', 'title', 'Actualizar información de Parametro.');
    resetPopup();    

    $.ajax({
        data: { para_icodigo_parametro: id },
        url: 'ObtenerParametro',
        type: 'POST',
        success: function (response) {
            var dato = response;
            validarRedirect(dato);
            var parametro = dato.data.Data;
            if (dato.result = K_ResultadoAjax.Exito) {
                loadTipoTabla('ddlTabla', parametro.para_icodigo_tabla);
                $("#txtCodigo").val(parametro.para_icodigo_parametro);
                $("#txtNombre").val(parametro.para_vnombre_parametro);
                $("#txtValNum").val(parametro.para_dvalor_numerico);
                $("#txtValTexto").val(parametro.para_vvalor_texto);
                if (parametro.para_cflag_modificar == 'S')
                    $("#chkMod").prop("checked", true);
                else
                    $("#chkMod").prop("checked", false);

                if (parametro.para_cflag_eliminar == 'S')
                    $("#chkEli").prop("checked", true);
                else
                    $("#chkEli").prop("checked", false);

                $("#txtCodigo").attr('disabled', 'disabled');
                $("#ddlTabla").attr('disabled', 'disabled');
            }
        }
    });
}

function del(id) {
    alertify.confirm("Esta seguro de eliminar el parametro?", function (e) {
        if (e) {
            var item = Array();
            item[0] = id;
            eliminar(item);
        } else {
            alertify.error("Operación eliminación cancelada.");
        }
    });
    return false;
}

function ver(id) {
    $("#hidOpcion").val(K_Operacion.Ver);
    $("#mvNuevo").dialog("open");
    $("#mvNuevo").dialog('option', 'title', 'Información de Parametro.');
    resetPopup();
    $.ajax({
        data: { para_icodigo_parametro: id },
        url: 'ObtenerParametro',
        type: 'POST',
        success: function (response) {
            var dato = response;
            validarRedirect(dato);
            var parametro = dato.data.Data;
            if (dato.result = K_ResultadoAjax.Exito) {
                $("#ddlTabla").val(parametro.para_icodigo_tabla);
                $("#txtCodigo").val(parametro.para_icodigo_parametro);
                $("#txtNombre").val(parametro.para_vnombre_parametro);
                $("#txtValNum").val(parametro.para_dvalor_numerico);
                $("#txtValTexto").val(parametro.para_vvalor_texto);

                if (parametro.para_cflag_modificar == 'S')
                    $("#chkMod").prop("checked", true);
                else
                    $("#chkMod").prop("checked", false);

                if (parametro.para_cflag_eliminar == 'S')
                    $("#chkEli").prop("checked", true);
                else
                    $("#chkEli").prop("checked", false);


                $("#ddlTabla").attr('disabled', 'disabled');
                $("#txtCodigo").attr('disabled', 'disabled');
                $("#txtNombre").attr('disabled', 'disabled');
                $("#txtValNum").attr('disabled', 'disabled');
                $("#txtValTexto").attr('disabled', 'disabled');
                $("#chkMod").attr('disabled', 'disabled');
                $("#chkEli").attr('disabled', 'disabled');
            }
        }
    });

    return false;
}


function loadTipoTabla(control,  valSel) {
    $('#' + control + ' option').remove();
    $('#' + control).append($("<option />", { value: 0, text: '<- Seleccione ->' }));
    $.ajax({
        url: '../Parametro/ListarTipoTabla',
        type: 'POST',
        beforeSend: function () { },
        success: function (response) {
            var dato = response;
            validarRedirect(dato);
            if (dato.result == 1) {
                var datos = dato.data.Data;
               
                $.each(datos, function (indice, valor) {
                    
                    if (valor.Value == valSel) 
                        $('#' + control).append($("<option />", { value: valor.Value, text: valor.Text, selected: true }));
                    else
                        $('#' + control).append($("<option />", { value: valor.Value, text: valor.Text }));
                    
                });
            } else {
                alert(dato.message);
            }
        }
    });
}